# chill-dev_api
Api для сообщества программисты на чиле

---

**Запуск через докер**

`docker-compose up --build`


Порт сервера: 8080

Порт панели монги: 8081

Роуты index:
- / - вернет `{ msg: 'server is works' }`
- /ping - вернет `{ msg: 'server is works' }`

Тестовый интерфейс для авторизации

[Репо](https://github.com/Sinsl/test-chill-restapi)



Роуты Задач:
- /tasks - GET получает все задачи, возвращает
  -  `{success: true, tasks: [массив с задачами]}`
  -  `{success: false, msg: 'Документы не найдены'}`
- /tasks/main - GET получает все задачи верхнего уровня (без подзадач), возвращает
  -  `{success: true, tasks: [массив с задачами]}`
  -  `{success: false, msg: 'Документы не найдены'}`
- /tasks/:id - GET получает любую задачу по id, возвращает
  -  `{success: true, task: {объект с задачей}}`
  -  `{success: false, msg: 'Документы не найдены'}`
- /tasks/main-subtasks/:id - GET получает все подзадачи по id родителя, возвращает
  -  `{success: true, tasks: [массив с задачами]}`
  -  `{success: false, msg: 'Документы не найдены'}`
- /tasks/new-tasks - POST записывает новую задачу с подзадачами в базу (запрос в body в json), возвращает
  -  `{success: true, tasks: [массив с созданными задачами]}`
  -  `{success: false, msg: {Объект ошибки}}`
- /tasks/new-subtask/:id - POST записывает новую подзадачу в задачу по id (запрос в body в json), возвращает
  -  `{success: true, task: {объект с задачей}}`
  -  `{success: false, msg: {Объект ошибки}}`
- /tasks/:id - PUT изменяет задачу в базе (запрос в body в json), возвращает
  -  `{success: true, task: {объект с измененной задачей}}`
  -  `{success: false, msg: 'Документы не найдены'}`
- /tasks/:id - DELETE удаляет задачу в базе по id, а так же все подзадачи (если есть), возвращает
  -  `{success: true, countDelete: количество удаленных, tasksId: [массив id удаленных задач]}`
  -  `{success: false, countDelete: 0, msg: 'Документ уже удален'}`


Запрос на создание задачи с подзадачами (пример)
```json
{
    "task":
        {
            "title": "Заголовок тестовой задачи 1",
            "text": "Текст тестовой задачи 1",
            "deadlineDate": "2023-10-19T06:44:00.000+00:00",
            "type": "overdue"
        },
    "subtasks":
        [
            {
                "title": "Заголовок подзадачи 1 задачи 1",
                "text": "Текст подзадачи 1 задачи 1",
                "deadlineDate": "2023-11-19T06:44:00.000+00:00",
                "type": "overdue"
            },
            {
                "title": "Заголовок подзадачи 2 задачи 1",
                "text": "Текст подзадачи 2 задачи 1",
                "deadlineDate": "2023-11-19T06:44:00.000+00:00",
                "type": "overdue"
            }
        ]
}
```
  
